<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>变量、作用域和内存问题</title>
</head>
<body>
    <script>
        "use strict";
        /*
            按照ECMA-262的定义，JavaScript的变量与其他语言的变量有很大区别。JavaScript变量松散类型的本质，决定了他只是在特定的时间用于保存特定的值得一个名字而已。
            由于不存在定义某个变量必须要保存何种数据类型的规则，变量的值及其数据类型可以在脚本的生命周期内改变。尽管从某种角度看，这个能是一个既有趣有强大，同时又
            容易出现问题的特性，但JavaScript变量实际的复杂程度还远不如此。

            基本类型和引用类型的值：
                ECMAScript变量可能包含两种不同数据类型的值：基本类型值和引用类型值。基本类型值指的是简单的数据段，而引用类型值指那些可能由多个值构成的对象。

                在将一个值赋给变量时，编译器必须确定这个值是基本类型值还是引用类型值。前面讨论了5中基本数据类型：Undefined、Null、Boolean、Number和String。
                这5中基本数据类型是按值访问的，因为可以操作保存在变量中的实际的值。

                引用类型的值是保存在内存中的对象。与其他语言不同，JavaScript不允许直接访问内存中的位置，也就是说不能直接操作对象的内存空间。在操作对象时，实际上
                是在操作对象的引用而不是实际的对象。为此，引用类型的值是按引用访问的。


        */
    </script>
</body>
</html>